home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 23 / CU Amiga - Super CD-ROM 23 (June 1998).iso / CreatingGames / Utilities / Misc / GMS / GMSDev / Includes / system / modules.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-10-27  |  3.3 KB  |  105 lines

  1. #ifndef SYSTEM_MODULES_H
  2. #define SYSTEM_MODULES_H 1
  3.  
  4. /*
  5. **  $VER: modules.h V0.9B
  6. **
  7. **  (C) Copyright 1996-1997 DreamWorld Productions.
  8. **      All Rights Reserved.
  9. **
  10. */
  11.  
  12. #ifndef DPKERNEL_H
  13. #include <dpkernel/dpkernel.h>
  14. #endif
  15.  
  16. /*****************************************************************************
  17. ** Module Object.
  18. */
  19.  
  20. #define MODVERSION  1
  21. #define TAGS_MODULE ((ID_SPCTAGS<<16)|ID_MODULE)
  22.  
  23. struct Module {
  24.   struct Head Head;        /* [00] Standard header */
  25.   WORD   Number;           /* [12] Number of the associated module */
  26.   APTR   ModBase;          /* [14] Ptr to function jump table */
  27.   struct Segment *Segment; /* [18] Segment pointer */
  28.   WORD   TableType;        /* [22] Type of table */
  29.   WORD   empty;            /* [24] */
  30.   LONG   emp;              /* [26] */
  31.   LONG   Version;          /* [30] Version of the module */
  32.   LONG   Revision;         /* [34] Revision of the module */
  33.   struct ModHeader *Table; /* [38] Header */
  34.   BYTE   *Name;            /* [42] Name of the module */
  35. };
  36.  
  37. #define MODA_Number    (12|TWORD)
  38. #define MODA_TableType (22|TWORD)
  39. #define MODA_Version   (30|TLONG)
  40. #define MODA_Revision  (34|TLONG)
  41. #define MODA_Name      (42|TAPTR)
  42.  
  43. /*****************************************************************************
  44. ** Module file header.
  45. */
  46.  
  47. #define MODULE_HEADER_V1 0x4D4F4401
  48.  
  49. struct ModHeader {
  50.   LONG Version;
  51.   __asm LONG (*Init)(register __a0 struct Module *, register __a1 APTR DPKBase,
  52.                      register __a2 struct VBase *,
  53.                      register __d0 LONG dpkVersion,
  54.                      register __d1 LONG dpkRevision);
  55.   __asm void (*Close)(register __a0 struct Module *);
  56.   __asm LONG (*Expunge)(void);
  57.   WORD  TableType;      /* Type of function table to generate */
  58.   WORD  OpenCount;      /* Amount of programs with this module open */
  59.   BYTE  *Author;        /* Author of the module */
  60.   LONG  *FuncList;      /* Pointer to function list */
  61.   LONG  CPUNumber;      /* CPU that this module is compiled for */
  62.   LONG  ModVersion;     /* Version of this module */
  63.   LONG  ModRevision;    /* Revision of this module */
  64.   LONG  MinDPKVersion;  /* Minimum DPK version required */
  65.   LONG  MinDPKRevision; /* Minimum DPK revision required */
  66.   __asm LONG (*Open)(register __a0 struct Module *);
  67.   APTR  ModBase;        /* Generated function base for given CPU */
  68.   BYTE  *Copyright;     /* Copyright details */
  69.   BYTE  *Date;          /* Date of compilation */
  70.   BYTE  *Name;          /* Name of the module */
  71.   WORD  DPKTable;       /* Type of function table to get from DPK */
  72.   WORD  emp;            /* Reserved */
  73. };
  74.  
  75. /*****************************************************************************
  76. ** This structure is private.
  77. */
  78.  
  79. struct ModEntry {
  80.   struct ModEntry  *Next;     /* Next module in list */
  81.   struct ModEntry  *Prev;     /* Previous module in list */
  82.   struct Segment   *Segment;  /* Module segment */
  83.   struct ModHeader *Header;   /* Pointer to module header */
  84.   WORD   ModuleID;            /* Module ID */
  85.   WORD   empty;               /* Reserved */
  86.   BYTE   *Name;               /* Name of the module */
  87. };
  88.  
  89. struct LVOFunction {
  90.   WORD Jump;
  91.   LONG Code;
  92. };
  93.  
  94. /****************************************************************************/
  95.  
  96. #define CPU_68000  1
  97. #define CPU_68010  2
  98. #define CPU_68020  3
  99. #define CPU_68030  4
  100. #define CPU_68040  5
  101. #define CPU_68060  6
  102.  
  103. #endif /* SYSTEM_MODULES_H */
  104.  
  105.